#include "NodoArbol.h"

template <typename T>
NodoArbol<T>::NodoArbol(int id, T pContenedor, int Type)
{
    Clave=id;
    Contenedor=pContenedor;
    Hizq=NULL;
    Hder=NULL;
    padre=NULL;    //nuevo
    switch (Type) {
    case 2:
        FB=0;
        esRojo=false;
        break;
    case 3:
        FB=0;
        esRojo=true;
        break;
    default:
        FB=0;
        esRojo=false;
        break;
    }
}
/*template <typename T>
NodoArbol<T>::~NodoArbol()
{
    delete this;
}*/
template <typename T>
NodoArbol<T> NodoArbol<T>::operator =(NodoArbol<T> Copy)
{
    Clave=Copy.Clave;
    Contenedor=Copy.Contenedor;
    FB=Copy.FB;
    esRojo=Copy.esRojo;
    return *this;
}
template <typename T>
void NodoArbol<T>::setHizq(NodoArbol<T>* Hijo)
{
    Hizq=Hijo;
}
template <typename T>
void NodoArbol<T>::setHder(NodoArbol<T>* Hijo)
{
    Hder=Hijo;
}
template <typename T>
void NodoArbol<T>::setPadre(NodoArbol<T> *Padre)    //nuevo
{
    padre = Padre;
}

template <typename T>
NodoArbol<T>* NodoArbol<T>::getHizq()
{
    return Hizq;
}
template <typename T>
NodoArbol<T>* NodoArbol<T>::getHder()
{
    return Hder;
}

template <typename T>
NodoArbol<T>* NodoArbol<T>::getPadre()
{
    return padre;
}

template <typename T>
void NodoArbol<T>::setContenedor(T Conte)
{
    Contenedor=Conte;
}
template <typename T>
void NodoArbol<T>::setClave(int id)
{
    Clave=id;
}
template <typename T>
T NodoArbol<T>::getContenedor()
{
    return Contenedor;
}
template <typename T>
int NodoArbol<T>::getClave()
{
    return Clave;
}
template <typename T>
void NodoArbol<T>::setRojicidad(bool R)
{
    esRojo=R;
}
template <typename T>
bool NodoArbol<T>::getRojicidad()
{
    return esRojo;
}
template <typename T>
void NodoArbol<T>::setFB(int fb)
{
    FB=fb;
}
template <typename T>
int NodoArbol<T>::getFB()
{
    return FB;
}

template class NodoArbol<hola>;

template class NodoArbol<Cliente>;
template class NodoArbol<Registro>;
template class NodoArbol<Tarjeta>;
template class NodoArbol<std::string>;


